<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <h2>条件渲染</h2>
      <!-- v-if指令用来控制元素的显示和隐藏的, 里面写的是变量或者表达式 -->
      <p v-if="show">你看到我了</p>
      <!-- <p v-if="num">你看到我了</p> -->
      <button @click="fn">btn</button>

      <hr />

      <!-- v-else-if和v-else也可以做条件渲染 -->
      <!-- v-else-if和v-else必须紧挨着v-if  -->
      <p v-if="sex === 1">男</p>
      <p v-else-if="sex === 2">女</p>
      <p v-else>未知</p>

      <hr />

      <h2>template标签</h2>
      <!-- template是一个空的占位标签 -->
      <!-- 是vue提供的标签, 实际上是vue封装的一个组件 -->
      <template v-if="show2">
        <p>v-if是用来做条件渲染的</p>
        <p>v-else也可以</p>
      </template>

      <hr />

      <h2>v-show指令</h2>
      <!-- v-show和v-if一样可以控制元素的显示和隐藏 -->

      <!-- v-if是真正的控制元素的渲染和不渲染 -->
      <!-- v-show是始终渲染元素，通过css的display属性来控制显示和隐藏 -->

      <!-- v-show有更低的切换开销 -->
      <!-- v-if有更低的初始开销, 尤其是一开始不想显示的时候 -->

      <!-- 频繁切换用v-show,不频繁用v-if -->
      <!-- <p v-if="show3">你又看到我了1。</p> -->
      <p v-show="show3">你又看到我了2。</p>

      <!-- v-show不能和v-else以及v-else-if一起用，也不能和template一起用 -->
    </div>

    <script src="./lib/vue3.js"></script>
    <script>
      const { createApp } = Vue;

      createApp({
        data() {
          return {
            show: false,
            num: 2,
            sex: 1,
            show2: true,
            show3: false,
          };
        },
        methods: {
          fn() {
            this.show = !this.show;
          },
        },
      }).mount("#app");
    </script>
  </body>
</html>
